package com.humbleyuan.blogfront.service.impl;

import com.humbleyuan.blogfront.mapper.VisitUserMapper;
import com.humbleyuan.blogfront.service.VisitUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @Author: HumbleYuan
 * @description: 访问用户service层实现类
 * @Date: 2019/8/16
 * @Time: 15:05
 * @Version: 1.0
 */
@Service
public class VisitUserServiceImpl implements VisitUserService {

    @Autowired
    VisitUserMapper visitUserMapper;

    /**
     * 用户验证
     *
     * @return String用户验证结果
     */
    @Override
    public String verifyUser(String username, String pwd) {

        /**
         * 先获取用户名和密码进行简单的用户验证：
         * 1.若用户名为空，则判定为游客，表中v_user_id为null
         * 2.若用户名不为空，密码为空(此处设定新用户不输入密码，
         * 前台提示，并设置新用户密码栏用户新用户设置密码)，
         * 默认其为新用户，验证用户名是否存在
         *      2.1若不存在，则将该用户新增在表中；
         *      2.2若存在，返回“用户名已存在,请修改用户名”错误提示；
         * 3.若用户名不为空，密码不为空(判定其为已有用户，前台提示)
         * 默认其为老用户，先验证用户名
         *      3.1若不存在，返回前台“用户名不正确/新用户请勿输入密码”错误提示
         *      3.2若存在，验证密码是否对应
         *          3.2.1若对应，执行提交操作；
         *          3.2.2若不对应，返回前台“密码不正确，是否使用新用户名进行评论”提示
         */
        /**
         * 先验证用户名是否存在
         * 查询相应的userId,若为0则没有
         */
        Integer userId = visitUserMapper.getUserIdByUsername(username);

        String verifyRes;
        if (username == null)
            verifyRes = "游客";
        else if (pwd == null) {
            /**
             * 用户名不为空，密码为空，
             * 验证用户名是否存在
             */
            if (userId != 0)
                verifyRes = "用户名已存在,请修改用户名";
            else {  //用户名为新，新增为新用户,新增操作到提交的时候做
                verifyRes = "新用户";
            }

        } else if (userId == 0) { //用户名和密码都不为空的情况(判定为已有用户),但不存在此用户名
            verifyRes = "用户名不正确/新用户请勿输入密码";
        } else { //用户名正确，验证密码是否对应
            verifyRes = pwd.equals(visitUserMapper.getPwdByUsername(username)) ?
                    "用户名密码正确" : "密码不正确，是否使用新用户名进行评论";
        }

        return verifyRes;
    }
}
